Notes/Domino Fix List
SPR # MDLS6DGJA5Fixed in 6.5.5; 6.5.4 FP2 release

Product Area: Server Technical Area: Networking & Dialup Platform: Unix

SPR# MDLS6DGJA5 - Fixed long delays in SSL networking on Solaris servers.

Technote Number: 1219984

This issue was reported to Quality Engineering as SPR# MDLS6DGJA5, and was
fixed in Domino 6.5.4 Fix Pack 2.

Excerpt from the Lotus Domino Release 6.5.5 MR and 6.5.4 Fix Pack 2 fix lists
(available at

Networking & Dialup
SPR# MDLS6DGJA5 - Fixed a problem with IOCP stream reads broken on Solaris

Refer to the Upgrade Central site for details on upgrading Notes/Domino.

The problem occurs only when running IMAP with SSL on Solaris under certain

Supporting Information:

How IOCP on Solaris works when the server is reading from the network:
Bytes arrive at the device.
The driver interrupt occurs and code moves bytes to the kernel buffer.
The driver calls the Domino notify driver.
The Domino notify driver gets the count of total bytes available to be read and
sends it to the IOCP control thread.
The IOCP control thread updates the total number of bytes to be read ENDP
structure and wakes up a worker thread.
The worker thread does a read, then decrements the total number of bytes
available by how much it read.

The problem occurs under item 5 above. The shipped code adds the total number
of bytes available to the current number available. Expected behavior would be
to add the number of bytes that have just arrived to the current number
available. The driver doesn't know how many have just arrived, only the number
there at that moment.

This problem does not occur for NRPC because NRPC is a single request and a
single response. The number already there is always 0 for NRPC, so adding the
total number available to zero gives the right result.

IMAP allows clients to send multiple requests at the same time, and then get
back multiple responses in any order. So, it is possible for bytes to arrive
when there are also unread bytes sitting in the buffer. If the ENDP value for
bytes available is 20, and 20 new bytes arrive, the control thread adds the
total number of bytes available (40) to the number that Domino already knew
about (20) and gets 60.

The number of bytes available determines how the worker threads wait for IO.
When this number is incorrectly calculated, the problem occurs.
More >

Last Modified on 12/08/2013

Go back